package com.yang.design.behavior.observe;

import java.util.ArrayList;

/**
 * 具体目标类
 */
public class ConcreteSubject implements Subject {

    //状态维护,默认为零,状态可以有多个,即多个成员变量
    private int state = 0;

    @Override
    public void add(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void del(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void notifyObservers(int state) {
        for (Observer observer : observers) {
            observer.update(state);
        }
    }

    //调用这个方法会让状态发生改变

    public void setState(int state) {
        //先修改状态
        this.state = state;
        //通知对应的所有观察者
        notifyObservers(state);
    }
}
